﻿#include "FITKAbstractMeshingParameter.h"

namespace Interface
{
    FITKAbstractMeshingParameter::~FITKAbstractMeshingParameter()
    {
        for (FITKSurfaceMeshingParameter* s : _sMeshingParameters)
        {
            delete s;
        }
        for (FITKVolumeMeshingParameter* v : _vMeshingParameters)
        {
            delete v;
        }
    }

    void FITKAbstractMeshingParameter::appendMeshParameter(int partID)
    {
        _sMeshingParameters.insert(partID, new FITKSurfaceMeshingParameter);
        _vMeshingParameters.insert(partID, new FITKVolumeMeshingParameter);


    }
    void FITKAbstractMeshingParameter::removeMeshParameter(int partID)
    {
        auto s = _sMeshingParameters.find(partID);
        auto v = _vMeshingParameters.find(partID);

        if (s.value() != nullptr)
        {
            auto meshParameter = s.value();
            delete meshParameter;
            meshParameter = nullptr;
            _sMeshingParameters.remove(partID);
        }

        if (v.value() != nullptr)
        {
            auto meshParameter = v.value();
            delete meshParameter;
            meshParameter = nullptr;
            _vMeshingParameters.remove(partID);
        }
    }
    FITKSurfaceMeshingParameter* FITKAbstractMeshingParameter::getSurfaceMeshParameter(int partID)
    {
        if (!_sMeshingParameters.contains(partID)) return nullptr;
        auto s = _sMeshingParameters.find(partID);
        return s.value();
    }

    FITKVolumeMeshingParameter* FITKAbstractMeshingParameter::getVolumeMeshParameter(int partID)
    {
        if (!_vMeshingParameters.contains(partID)) return nullptr;
        auto v = _vMeshingParameters.find(partID);
        return v.value();
    }
}


